package pl.peterjack.servlet.dane.pracownicy;

import java.io.IOException;

import javax.jdo.PersistenceManager;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.impl.LogFactoryImpl;

import pl.peterjack.model.PMF;
import pl.peterjack.model.dane.Firma;
import pl.peterjack.model.dane.Pracownik;
import pl.peterjack.model.dane.PracownikUprawnienia;
import pl.peterjack.model.dane.RezultatOdpowiedz;

import com.google.gson.Gson;

public class UprawnienieUstaw  extends HttpServlet {
	
	Log log = new LogFactoryImpl().getInstance( getClass() );

	@Override 
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {

		PersistenceManager pm = PMF.get().getPersistenceManager();
		{
			Pracownik pracownik = (Pracownik) req.getSession().getAttribute("firma_pracownik");
			if (req.getSession().getAttribute("firma_klient") != null || pracownik != null) {
				req.getSession().invalidate();
				resp.setContentType("text/plain");
				resp.setStatus(resp.SC_MOVED_TEMPORARILY);
				resp.setHeader("Location", "/");
				return;
			}
		}
	    Firma firma = (Firma) req.getSession().getAttribute("firma");
	    Long id = Long.parseLong((String)req.getParameter("id")); 
	    PracownikUprawnienia pracownikUprawnienia = pm.getObjectById(PracownikUprawnienia.class, id);
	    Gson gson = new Gson();
	    RezultatOdpowiedz result = new RezultatOdpowiedz();
	    if ("on".equals(req.getParameter("wystawianie_faktur"))) {
	    	pracownikUprawnienia.setWystawienieFaktur(true);
	    } else {
	    	pracownikUprawnienia.setWystawienieFaktur(false); 
	    }
	    if ("on".equals(req.getParameter("zarzadzanie_klientami"))) {
	    	pracownikUprawnienia.setZarzadzanieKlientami(true); 
	    } else {
	    	pracownikUprawnienia.setZarzadzanieKlientami(false); 
	    }
	    if ("on".equals(req.getParameter("zarzadzanie_produktami"))) {
	    	pracownikUprawnienia.setZarzadzanieProduktami(true); 
	    } else {
	    	pracownikUprawnienia.setZarzadzanieProduktami(false);
	    }
	    if ("on".equals(req.getParameter("zarzadzanie_fakturami"))) {
	    	pracownikUprawnienia.setZarzadzanieFakturami(true); 
	    } else {
	    	pracownikUprawnienia.setZarzadzanieFakturami(false); 
	    }
	    if ("on".equals(req.getParameter("dodawanie_klientow"))) {
	    	pracownikUprawnienia.setDodawanieKlientow(true); 
	    } else {
	    	pracownikUprawnienia.setDodawanieKlientow(false); 
	    }
	    if ("on".equals(req.getParameter("dodawanie_produktow"))) {
	    	pracownikUprawnienia.setDodawanieProduktow(true); 
	    } else {
	    	pracownikUprawnienia.setDodawanieProduktow(false); 
	    }
	    if ("on".equals(req.getParameter("import_danych"))) {
	    	pracownikUprawnienia.setImportDanych(true); 
	    } else {
	    	pracownikUprawnienia.setImportDanych(false); 
	    }

		if (!pracownikUprawnienia.getFirma().equals(firma.getId())) {
			req.getSession().invalidate();
			resp.setContentType("text/plain");
			resp.setStatus(resp.SC_MOVED_TEMPORARILY);
			resp.setHeader("Location", "/");
			return;
		}

	    try {
	    	pm.makePersistent(pracownikUprawnienia); 
	    	result.setSuccess(true);
	    	result.setData( pracownikUprawnienia );
        } catch(Exception e) {
        	e.printStackTrace(); 
        	result.setSuccess(false);
        } finally {
            pm.close();
		    resp.setCharacterEncoding("UTF-8");
            resp.getWriter().println(gson.toJson(result));
        }
	    //resp.setContentType("application/json");
	}

}	

